package com.fg.cloud.manager.service.agency;

import java.math.BigDecimal;
import java.util.List;
import com.fg.cloud.common.PageUtils;
import com.fg.cloud.manager.entry.agency.vo.AgencyUserVo;
import com.fg.cloud.manager.entry.product.ProductSkuEntity;
import com.fg.cloud.manager.entry.product.vo.ProductInfoVo;
import com.fg.cloud.manager.entry.system.TrolleyEntity;
import com.fg.cloud.manager.entry.system.vo.AgencyCartVo;
import com.fg.cloud.manager.entry.system.vo.TrolleyVo;
import com.fg.cloud.manager.service.BaseService;

/**
 * Description:购物车Service接口
 * @author dingjiang
 * @date 2017年8月28日上午11:37:50
 */
public interface AgencyCartService extends BaseService {
	
	/**
	 * Description:查询经销商购物车数量
	 * @param ageId
	 * @return
	 * @author around
	 * @date 2017年10月19日下午6:02:26
	 */
	Long findCount(Long ageId);
	
	/**
	 * Description:判断要添加的商品skuId和unitId是否已存在
	 * @param skuId
	 * @param unitId
	 * @return
	 * @author dingjiang
	 * @date 2017年8月29日上午10:57:53
	 */
	//boolean filter(Long ageId, Long skuId, Long unitId);
	boolean filter(AgencyCartVo cartVo);
	/**
	 * Description:数量累加
	 * @param amount
	 * @param skuId
	 * @param unitId
	 * @param updater
	 * @return
	 * @author dingjiang
	 * @date 2017年8月29日下午2:05:09
	 */
	//boolean addAmount(BigDecimal amount, Long skuId, Long unitId, Long updater);
	boolean addAmount(AgencyCartVo cartVo, Long updater);
	
	/**
	 * Description:加入购物车
	 * @param entity
	 * @param ageId
	 * @param userId
	 * @param currentAgencyUser
	 * @return
	 * @author dingjiang
	 * @date 2017年9月25日上午10:41:12
	 */
	boolean insert(ProductInfoVo entity, AgencyUserVo currentAgencyUser);

	/**
	 * Description:分页查询购物车列表
	 * @param pageInfo
	 * @author dingjiang
	 * @date 2017年8月29日下午2:05:24
	 */
	void findList(PageUtils<AgencyCartVo> pageInfo, AgencyUserVo user);
	
	/**
	 * Description:查询同种sku数量之和
	 * @param skuId
	 * @return
	 * @author dingjiang
	 * @date 2017年8月29日下午6:49:57
	 */
	List<TrolleyEntity> findAmount(Long skuId);
	
	/**
	 * Description:获取当前经销商购物车中所有记录
	 * @param ageId
	 * @return
	 * @author dingjiang
	 * @date 2017年8月30日上午11:17:55
	 */
	List<TrolleyEntity> findAll(Long ageId);
	
	/**
	 * Description:删除指定的购物车记录
	 * @param ageId
	 * @param ids
	 * @return
	 * @author dingjiang
	 * @date 2017年8月30日上午10:49:37
	 */
	boolean deletes(Long ageId, Long[] ids);
	
	boolean deleteBySku(Long ageId, Long[] ids);
	
	/**
	 * Description:清空购物车
	 * @param ageId
	 * @return
	 * @author around
	 * @date 2017年10月19日下午6:03:38
	 */
	boolean deleteAll(Long ageId);
	
}
